// error处理
// 大部分的内置包或者外部包，都有自己的报错处理机制。因此我们使用的任何函数可能报错，这些报错都不应该被忽略，
// 而是在调用函数的地方，优雅地处理报错
package main

import (
	"fmt"
	"net/http"
)

func main() {
	resp, err := http.Get("http://example.com/")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(resp)

}

// panic/recover：
// 用于处理严重错误（如程序崩溃），不推荐频繁使用。
// package main

// import (
// 	"fmt"
// )

// // 案例: 空指针引用
// func demoNilPointer() {
// 	fmt.Println("\n------ 空指针引用案例 ------")
// 	defer func() {
// 		if r := recover(); r != nil {
// 			fmt.Println("捕获到panic:", r)
// 		}
// 	}()

// 	var p *int = nil
// 	fmt.Println("尝试解引用空指针")
// 	fmt.Println(*p) // 这里会引发panic
// }

// func main() {
// 	demoNilPointer()
// 	fmt.Printf("hello world")

// }
